import QQMap from '../../../utils/qqmap'
Page({
  data: {
    address: '',
    points: []
  },
  onLoad() {
    // 获取用户经纬度（如果位置服务不可用，使用模拟数据）
    this.getLocation()
  },
  async getLocation() {
    try {
      // 调用小程序 API 获取用户位置
      const { latitude, longitude } = await wx.getLocation()
      // 获取周边小区
      this.getPoint(latitude, longitude)
    } catch (err) {
      console.error('获取位置失败:', err)
      // 如果获取位置失败，使用模拟数据
      this.useMockData()
    }
  },
  async chooseLocation() {
    try {
      // 调用小程序 API 获取新的位置
      const { latitude, longitude, address } = await wx.chooseLocation()
      // 更新当前地址
      this.setData({ address })
      // 获取新的位置附近的小区
      this.getPoint(latitude, longitude)
    } catch (err) {
      console.error('选择位置失败:', err)
      // 如果选择位置失败，使用模拟数据
      this.useMockData()
    }
  },
  getPoint(latitude, longitude) {
    //显示loading提示
    wx.showLoading({
      title: '正在加载',
    })
    // 逆地址解析（根据经纬度来获取地址）
    QQMap.reverseGeocoder({
      location: [latitude, longitude].join(','),
      success: ({
        result: {
          address
        }
      }) => {
        // 保存地址数据
        this.setData({
          address
        })
      },
      fail: () => {
        // 逆地址解析失败时，使用默认地址
        this.setData({
          address: '建材城西路9号'
        })
      }
    })

    // search 是实现地点搜索功能的方法
    QQMap.search({
      keyword: '住宅小区', //搜索关键词
      location: [latitude, longitude].join(','), //设置周边搜索中心点
      page_size: 5,
      success: (result) => {
        // 过滤掉多余的数据
        const points = result.data.map(({
          id,
          title,
          _distance
        }) => {
          return {
            id,
            title,
            _distance
          }
        })
        // 渲染数据
        this.setData({
          points
        })
      },
      fail: (err) => {
        console.error('搜索失败:', err)
        // 位置服务不可用时，使用模拟数据
        this.useMockData()
      },
      complete: () => {
        // 隐藏 loading 提示
        wx.hideLoading()
      }
    })
  },
  // 使用模拟数据（当位置服务不可用时）
  useMockData() {
    // 模拟当前地址
    this.setData({
      address: '建材城西路9号'
    })
    // 模拟小区列表数据
    const mockPoints = [
      { id: '1', title: '北京西三旗花园', _distance: '120m' },
      { id: '2', title: '建材城东里小区', _distance: '350m' },
      { id: '3', title: '海淀区建材城西路小区', _distance: '580m' },
      { id: '4', title: '西三旗建材城社区', _distance: '720m' },
      { id: '5', title: '建材城北路花园', _distance: '950m' }
    ]
    this.setData({
      points: mockPoints
    })
  },
  // 跳转到楼栋页面
  goToBuilding(ev) {
    const point = ev.currentTarget.dataset.point
    const url = `/house_pkg/pages/building/index?point=${point || ''}`
    wx.navigateTo({ url })
  }
})